home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1983-10-18 | 5.3 KB | 105 lines
1 REM ANALYSIS OF VARIANCE 2 REM Written by Tracy L. Gustafson, M.D. 3 REM Round Rock, Texas. Version 2.1, 1983 4 DEF SEG=&H40 5 A=PEEK(&H17): IF NOT(A AND &H20) THEN POKE &H17,(A AND (NOT &H20)) OR &H20 8 DEF SEG: KEY OFF: CLEAR: OPTION BASE 1: DEFINT A-C,N,T,Z: DEFSTR D 9 SCREEN 0: WIDTH 80: COLOR 7,0,1: DIM NS(1) 10 CLS: PRINT TAB(25);"KEY";STRING$(22,205);"CLOSE" 12 PRINT TAB(25);"OPEN ANALYSIS OF VARIANCE OPEN" 15 PRINT TAB(25);"SCREEN";STRING$(22,205);"LOAD": PRINT: PRINT 20 PRINT TAB(10);"1.) 1-WAY ANOVA. For comparing the MEANS of 3 or": PRINT TAB(15);"more independent samples. (unpaired test)": PRINT 30 PRINT TAB(10);"2.) 2-WAY ANOVA. For evaluating the combined effects": PRINT TAB(15);"of 2 variables on a third. (ROW and COLUMN effects)": PRINT 35 PRINT TAB(10);"3.) F DISTRIBUTION - Evaluate known F value": PRINT: PRINT 40 PRINT TAB(20);: INPUT "Enter your choice: ",ASUB: IF ABS(ASUB-2)>1.1 THEN BEEP: GOTO 40 ELSE IF ASUB<3 THEN 50 42 CLS: PRINT TAB(17);"EVALUATING A KNOWN F VALUE - F DISTRIBUTION" 43 PRINT TAB(17);STRING$(43,205): PRINT: PRINT 44 PRINT TAB(26);: INPUT "Enter F value: ",F: PRINT 45 PRINT TAB(15);: INPUT "Enter degrees of freedom in NUMERATOR: ",V1: PRINT 46 PRINT TAB(13);: INPUT "Enter degrees of freedom in DENOMINATOR: ",V2 47 GOSUB 400 48 COLOR 7,0: PRINT: PRINT TAB(17);: INPUT "Do you want to evaluate another F value? ",A$ 49 IF A$="y" OR A$="Y" THEN 42 ELSE 380 50 PRINT: PRINT: PRINT: AP=CSRLIN: PRINT TAB(8);: INPUT "What is the name of the DATAFILE you wish to analyze? ",FILE$: ON ERROR GOTO 600 60 OPEN FILE$ FOR INPUT AS #1: INPUT #1, A,C 70 DIM D(A,C),CS(A,C),T(A),N$(A),X(A),X2(A),MD(A),SD(A) 80 FOR T=1 TO A: INPUT #1, T(T): NEXT 90 FOR T=1 TO A: FOR Z=1 TO C: INPUT #1, D(T,Z): NEXT: NEXT 100 FOR T=1 TO A: FOR Z=1 TO T(T): INPUT #1, CS(T,Z): NEXT: NEXT 110 FOR T=1 TO A: INPUT #1, N$(T),X(T),X2(T),MD(T),SD(T): NEXT: CLOSE #1 120 ON ASUB GOTO 130,200 130 CLS: PRINT TAB(23);"ONE-WAY ANALYSIS OF VARIANCE" 135 PRINT TAB(23);STRING$(28,205): PRINT: PRINT 140 PRINT TAB(25);FILE$;" has ";A;" samples. ": PRINT: PRINT TAB(10); 142 INPUT "How many samples do you want to include in the ANOVA? ",AMX 144 PRINT "Enter these";AMX;"sample numbers:": ERASE NS: DIM NS(AMX) 145 PRINT: TB=11: FOR T=1 TO AMX: PRINT TAB(TB);: INPUT;"",NS(T): TB=TB+10: IF TB>70 THEN TB=11: PRINT 150 NEXT: PRINT: PRINT "NAMES:";:TB=9: FOR T=1 TO AMX: PRINT TAB(TB);N$(NS(T));: TB=TB+10: IF TB>70 THEN TB=9: PRINT 155 NEXT: PRINT: PRINT "MEANS:";: TB=7 156 FOR T=1 TO AMX: MN=X(NS(T))/T(NS(T)): IF ABS(MN)>9999 THEN P$="#######.#" ELSE IF ABS(MN)>9 THEN P$="#####.###" ELSE P$="##.######" 158 PRINT TAB(TB);: PRINT USING P$;MN;: TB=TB+10: IF TB>70 THEN TB=7: PRINT 160 NEXT: PRINT: XM=0: NT=0: XM2=0: ST=0: XT2=0 165 FOR T=1 TO AMX: XM=XM+X(NS(T)): XM2=XM2+X2(NS(T)): NT=NT+T(NS(T)): XT2=XT2+X(NS(T))*X(NS(T))/T(NS(T)): NEXT 170 ST=XT2-XM*XM/NT: SS=XM2-XM*XM/NT: ES=SS-ST 175 V1=AMX-1: V2=NT-AMX: F=ST/V1*V2/ES 180 PRINT: PRINT:PRINT TAB(8);"F = ";F;TAB(38);"DF1 = ";V1;TAB(52);"DF2 = ";V2 185 GOSUB 400 190 PRINT TAB(8);"The MEANS of these samples are ";:IF P>0.05 THEN PRINT "NOT "; 195 PRINT "significantly different.";TAB(75): COLOR 7,0 197 GOTO 350 200 CLS: PRINT TAB(23);"TWO-WAY ANALYSIS OF VARIANCE" 205 PRINT TAB(23);STRING$(28,205): PRINT 210 PRINT TAB(25);FILE$;" has ";A;" samples.": PRINT TAB(10); 212 INPUT "How many samples do you want to include in the ANOVA? ",AMX 214 PRINT "Enter these";AMX;"sample numbers:": ERASE NS: DIM NS(AMX) 215 PRINT: TB=11: FOR T=1 TO AMX: PRINT TAB(TB);: INPUT;"",NS(T): TB=TB+10: IF TB>70 THEN TB=11: PRINT 216 NEXT: PRINT: PRINT "NAMES:";:TB=9: FOR T=1 TO AMX: PRINT TAB(TB);N$(NS(T));: TB=TB+10: IF TB>70 THEN TB=9: PRINT 217 NEXT: PRINT: PRINT "MEANS:";: TB=7 218 FOR T=1 TO AMX: MN=X(NS(T))/T(NS(T)): IF ABS(MN)>9999 THEN P$="#######.#" ELSE IF ABS(MN)>9 THEN P$="#####.###" ELSE P$="##.######" 219 PRINT TAB(TB);: PRINT USING P$;MN;: TB=TB+10: IF TB>70 THEN TB=7: PRINT 220 NEXT: PRINT: FOR T=2 TO AMX: IF T(NS(T))<>T(NS(1)) THEN PRINT "These samples do not all have the same number of elements---": PRINT TAB(37);"a 2-WAY ANOVA cannot be performed.": GOTO 350 ELSE NEXT 230 XR2=0: XM=0: XM2=0: XC2=0: N=T(NS(1)): NT=AMX*N 240 FOR Z=1 TO N: XR=0: FOR T=1 TO AMX: XR=XR+VAL(D(NS(T),Z)): NEXT 250 XR2=XR2+XR*XR/AMX: NEXT 260 FOR T=1 TO AMX: XM=XM+X(NS(T)): XM2=XM2+X2(NS(T)): XC2=XC2+X(NS(T))*X(NS(T))/N: NEXT 270 SS=XM2-XM*XM/NT: SR=XR2-XM*XM/NT: SC=XC2-XM*XM/NT: RES=SS-SR-SC 280 V1=N-1: V2=(N-1)*(AMX-1): F=SR/V1*V2/RES: PRINT 290 PRINT TAB(8);"F (ROWS) = ";F;TAB(44);"DF1 = ";V1;TAB(59);"DF2 = ";V2 295 GOSUB 400 300 PRINT TAB(14);"There is ";: IF P>0.05 THEN PRINT "NOT "; 305 PRINT "a significant difference between ROWS.";TAB(75): COLOR 7,0 310 V1=A-1: F=SC/V1*V2/RES: PRINT: PRINT 315 PRINT TAB(8);"F (COLUMNS) = ";F;TAB(44);"DF1 = ";V1;TAB(59);"DF2 = ";V2 320 GOSUB 400 330 PRINT TAB(12);"There is ";: IF P>0.05 THEN PRINT "NOT "; 340 PRINT "a significant difference between COLUMNS.";TAB(75): COLOR 7,0 350 PRINT: PRINT 360 PRINT " Do you want to perform another ANALYSIS OF VARIANCE test": PRINT TAB(50);: INPUT "using this datafile? ",A$ 370 IF A$="y" OR A$="Y" THEN 120 380 END 400 X=1/(V1/V2*F+1): Y=1-X: PF=1: PT=1: VA=V1: VB=V2 410 IF V1 MOD 2<>0 THEN IF V2 MOD 2=0 THEN 450 ELSE 470 420 IF V2 MOD 2=0 THEN IF V2>=V1 THEN 450 430 FOR Z=1 TO (V1/2-1): PF=PF*(0.5/Z*Y*VB): PT=PT+PF: VB=VB+2: NEXT 440 P=X^(V2*0.5)*PT: GOTO 570 450 FOR Z=1 TO (V2/2-1): PF=PF*(0.5/Z*X*VA): PT=PT+PF: VA=VA+2: NEXT 460 P=1-Y^(V1*0.5)*PT: GOTO 570 470 XT=ATN(SQR(F*V1/V2)): X=SIN(XT): Y=COS(XT): PT=Y: PF=Y 480 IF V2=1 THEN 510 490 FOR Z=2 TO (V2-3) STEP 2: PF=PF*Y*Y*Z/(Z+1): PT=PT+PF: NEXT 500 PT=PT*X: XT=XT+PT 510 PT=1: PF=1: IF V1=1 THEN 560 520 FOR Z=2 TO (V2-1) STEP 2: PF=PF*Z/(Z-1): NEXT 530 PF=PF*Y^V2*X: PZ=1: PT=1: VB=V2+1 540 FOR Z=3 TO (V1-2) STEP 2: PZ=PZ*VB*X*X/Z: PT=PT+PZ: VB=VB+2: NEXT 550 XT=XT-PT*PF 560 P=1-XT*2/3.14159 570 PLAY "MB MS O2 T140 L32G L8A L32F L8G. L20 CDC L2 F" 575 PRINT: PRINT TAB(25);:COLOR 0,7:PRINT " P = ";:IF P<1E-06 THEN PRINT "< 10 (-6)"; ELSE PRINT P; 580 PRINT TAB(46): PRINT: COLOR 0,7: RETURN 590 END 600 BEEP: PRINT: IF ERL=60 AND ERR=53 THEN PRINT: PRINT TAB(13); "I cannot find a file by that name on drive "; ELSE 630 610 IF MID$(FILE$,2,1)=":" THEN DR$=LEFT$(FILE$,2) ELSE DR$="A:" 620 PRINT DR$: PRINT "Your files are:": FILES DR$+"*.*": RESUME 50 630 ON ERROR GOTO 0